package org.example.B_100;

import java.util.*;
import java.util.stream.Collectors;

/**
 * 数组拼接
 */
public class ArraySplicing {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        //读入每次从数组中读出多长
        int subLen = Integer.parseInt(sc.nextLine());

        //读入一共有多少行数组
        int n = Integer.parseInt(sc.nextLine());

        LinkedList<LinkedList<Integer>> lists = new LinkedList<>();

        //读入输入，并且处理为一个linkedlist加入到集合中
        for (int i = 0; i < n; i++) {
            lists.add(
                new LinkedList<>(
                    Arrays.stream(sc.nextLine().split(","))
                            //过滤输入为4,,6这种情况
                            .filter(a -> !"".equals(a))
                            .map(Integer::parseInt)
                            .collect(Collectors.toList())));
        }

        System.out.println(getResult(subLen,lists));
    }

    //处理传入的数据
    public static String getResult(int subLen,LinkedList<LinkedList<Integer>> lists){
        //定义返回结果集
        ArrayList<Integer> ans = new ArrayList<>();

        //题目要求每次添加就删除原数组数据，若一个数组添加完成，则数组长度也为空
        while (lists.size() > 0 ){
            //获取当前列表中的第一个列表
            LinkedList<Integer> list = lists.removeFirst();
            //移除当前列表中的sublen个数据，并且添加到结果集中
            ans.addAll(removeRange(list,0,subLen));
            //如果当前列表中还有数据，就重新加入到总列表的最后
            if (list.size() > 0 ){
                lists.addLast(list);
            }
        }

        //将总列表中的数据凭借为一个String
        StringJoiner sj = new StringJoiner(",");
        for(Integer an : ans){
            sj.add(an+"");
        }
        return sj.toString();
    }
}
